package com.cn.wanxi.servlet;

import com.alibaba.fastjson.JSONObject;
import com.cn.wanxi.model.ResultModel;
import com.cn.wanxi.model.UserModel;
import com.cn.wanxi.service.UserService;
import com.cn.wanxi.service.impl.UserServiceImpl;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * 登录逻辑
 * 1.登录页面
 * 2.用户输入数据
 * 3.正则表达式（判断用户输入格式是否正确）
 * 4.将数据传输到后台（ajax）
 * --------------
 * 5.后台servlet 接收数据
 * 1.乱码
 * 2.接收数据
 * 3.封装对象（前端拿到的数据）
 * 4.调用service层
 * 5.得到返回结果
 * 6.将返回结果返回给前端
 */
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//       处理乱码
        req.setCharacterEncoding("UTF-8");
        resp.setCharacterEncoding("UTF-8");
//        拿到前端的数据
        String username = req.getParameter("username");
        String password = req.getParameter("password");

        UserModel userModel = new UserModel();
        userModel.setUsername(username);
        userModel.setPassword(password);
        userModel.setSex("女");
        System.out.println(username);
        System.out.println(password);

//  以后传递参数的时候，尽量不要以值传递，尽量用引用传递，用对象
//        有两个及以上相似的代码都应该封装
//  用户需要得到操作的结果,因为前后端都必须用对象的形式进行传递，
//  所以需要将数据转换为对象
//   怎么将对象传递到前端？
//        o的数据应该是根据用户名和密码查询数据库，得到的值
//        根据得到的值判断是否可以登录：如果能够登录则返回success，否则返回error
//        所以，这里返回的应该是一个结果的对象，
        UserService userService = new UserServiceImpl();
        ResultModel resultModel = userService.login(userModel);
//        Object o = userModel;//前端只认json对象，所以需要将对象强制转换为json
        resp.getWriter().println(JSONObject.toJSON(resultModel));//这里的数据就是传递到前端

    }
}
